#include <QApplication>
#include <QTranslator>
#include <QDebug>
#include "widget/ExampleElaWindow.h"
#include "ElaApplication.h"
#include "ElaTheme.h"
#include "widget/LanguageSettings.h"  // 包含语言设置头文件

// 加载翻译文件的函数
bool loadApplicationLanguage(int language)
{
    QTranslator* translator = new QTranslator(qApp);
    QString translationFile;

    // 根据语言设置选择翻译文件
    switch (language)
    {
        case 0:  // 中文
            translationFile = "translation_zh_CN.qm";
            break;
        case 1:  // 英文
            translationFile = "translation_en_US.qm";
            break;
        case 2:  // 俄文
            translationFile = "translation_ru_RU.qm";
            break;
        default:  // 默认中文
            translationFile = "translation_zh_CN.qm";
            break;
    }

    // 构建翻译文件路径
    QString qmPath = QApplication::applicationDirPath() + "/translations/" + translationFile;

    if (translator->load(qmPath))
    {
        QApplication::installTranslator(translator);
        qDebug() << "Loaded translation:" << qmPath;
        return true;
    }
    else
    {
        qDebug() << "Failed to load translation:" << qmPath;
        delete translator;
        return false;
    }
}

int main(int argc, char* argv[])
{
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
    QGuiApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);  // 启用高 DPI (界面布局和几何)
#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0))
    QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);                                               //  启用自动高 DPI 缩放 (图标和图片)
    QGuiApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough);  // 使用精确的缩放因子，不进行四舍五入
#else
    // 根据实际屏幕缩放比例更改
    qputenv("QT_SCALE_FACTOR", "1.5");
#endif
#endif

    QApplication app(argc, argv);

    // 在创建窗口前加载翻译
    loadApplicationLanguage(BUILD_LANGUAGE);

    eApp->init();  // 初始化资源、字体等

    ExampleElaWindow window;
    window.resize(1200, 800);
    window.moveToCenter();
    window.show();

    return app.exec();
}